《高性能網(wǎng)站建設指南》閱讀筆記_規則9- 減少DNS查找
發(fā)布時(shí)間:2013-11-22 瀏覽:435打印字號:大中小
首先解釋幾個(gè)名詞:
DNS:大家都知道是域名系統
TTL值(Time- to - live,生存時(shí)間):
每個(gè)記錄都有一個(gè)生存時(shí)間(TTL)值,這個(gè)值就決定了這個(gè)紀錄什么時(shí)候刷新,進(jìn)而被其他查詢(xún)取代。在TTL到達之前,Windows解析將返回緩存中的查詢(xún)結果,而不會(huì )開(kāi)始新的DNS查詢(xún)。
對美國10大網(wǎng)站的統計,他們發(fā)給用戶(hù)的TTL從1分鐘到1小時(shí)不等,這是由綜合考慮和歷史因素造成的。這些擁有巨大數量用戶(hù)的頂級網(wǎng)站都在努力做到當服務(wù)器,虛擬ip地址(http://baike.baidu.com/view/711543.htm)或者聯(lián)合定位掉線(xiàn)時(shí)提供快速故障轉移,這也是yahoo提供較短的ttl的原因,但是Myspace則定位到一個(gè)聯(lián)合定位工具,對于當前網(wǎng)絡(luò )情況,故障轉移不是很重要,因此使用較長(cháng)的TTL以減少DNS查找,也降低了其名稱(chēng)服務(wù)器的負載。
DNS Client 服務(wù)-- --> 在操作系統客戶(hù)端的配置:
可以使用控制臺的IPConfig命令來(lái)觀(guān)測緩存容量并清空緩存。
通過(guò)以下的命令就可以顯示緩存的容量,并將結果傳送給More指令,從而將結果一次性在一頁(yè)中顯示出來(lái):ipconfig/displaydns
使用一下這個(gè)命令來(lái)清空緩存:ipconfig/flushdns
Keep-Alive: http構建在TCP上,在http的早期實(shí)現中,每個(gè)http請求都要打開(kāi)一個(gè)socket連接,這樣做效率很低,因為一個(gè)web頁(yè)面中很多的http請求都指向同一個(gè)服務(wù)器。例如很多web頁(yè)面中的圖片發(fā)起的請求都指向一個(gè)圖片服務(wù)器。持久連接的引入解決看多對一請求服務(wù)器導致socket連接低效性的問(wèn)題。
瀏覽器自身也有其DNS緩存(如:IE、Firefox),而它們的配置要在注冊表中修改。
每次重新啟動(dòng)瀏覽器也就自動(dòng)清空了瀏覽器的DNS緩存,但它不會(huì )清空DNSClient 服務(wù)緩存。
Fasterfox(http://fasterfox.mozdev.org)是一款Firefox的插件,用于測量和改善Firefox的性能。
DNS將主機名映射到IP上,連接到瀏覽器的DNS解析器會(huì )返回服務(wù)器的ip地址。一個(gè)url可以對應多個(gè)ip,比如我們的對應59.151.102.207、105、106
DNS解析也是開(kāi)銷(xiāo),在DNS查找之前瀏覽器不能從主機名那里下載到任何東西(這一過(guò)程通常需要20到120毫秒),相應時(shí)間依賴(lài)于DNS解析器,他所能承擔的請求壓力,你與它之間的距離和你的帶寬速度。實(shí)際中操作系統和瀏覽器做為緩存DNS查找記錄,但是瀏覽器的Keep-Alive屬性會(huì )覆蓋操作系統的緩存過(guò)期時(shí)間。
我們可以發(fā)現,減少DNS查找和第六章所提到的“并行下載”是矛盾的,這方面做的最好的是google,它只有一次DNS查找,因為它頁(yè)面中只有兩個(gè)組件,所以也不存在影響并行下載的問(wèn)題。我們的網(wǎng)站不可能只有兩個(gè)組件,所以這里又需要一個(gè)權衡,本書(shū)作者建議使用最少兩個(gè),最多4個(gè)主機名來(lái)平衡。我們使用的是img1到4,4個(gè),和作者的建議相符合。
綜上所述:通過(guò)使用keep-Alive和較少的域名可以減少DNS查找。


